<!doctype html>
<html lang="en">

	<head>
		<meta charset="UTF-8" />
		<title>Document</title>
	</head>

	<body>
		<!--编程题: 写一个按键, 点击后 轮流显示”日周月”, 关闭后再打开能显示关闭前显示的状态
			概念题:  1. HTML行内元素有哪些, 块级元素有哪些?画出CSS盒模型
						2.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?
						3. 清除浮动的几种方式, 各自的优缺点?
						4. HTML5存储类型有哪些?
						5. HTTP状态吗有哪些, 分别代表什么意思?(几个常用的就行, 不用全说)-->
		<p></p>
		<button onclick="btnChange()">切换</button>
		<p>html行标签: a - 锚点 , abbr - 缩写 , acronym - 首字 , b - 粗体(不推荐) , bdo - bidi override , big - 大字体 , br - 换行 , cite - 引用 , code - 计算机代码(在引用源码的时候需要) , dfn - 定义字段 , em - 强调 , font - 字体设定(不推荐) , i - 斜体 , img - 图片 , input - 输入框 , kbd - 定义键盘文本 , label - 表格标签 , q - 短引用 , s - 中划线(不推荐) , samp - 定义范例计算机代码 , select - 项目选择 , small - 小字体文本 , span - 常用内联容器，定义文本内区块 , strike - 中划线 , strong - 粗体强调 , sub - 下标 , sup - 上标 , textarea - 多行文本输入框 , tt - 电传文本 , u - 下划线 , var - 定义变量</p>
		<p>html块标签: address - 地址 , blockquote - 块引用 , center - 举中对齐块 , dir - 目录列表 , div - 常用块级容易，也是css layout的主要标签 , dl - 定义列表 , fieldset - form控制组 , form - 交互表单 , h1 - 大标题 , h2 - 副标题 , h3 - 3级标题 , h4 - 4级标题 , h5 - 5级标题 , h6 - 6级标题 , hr - 水平分隔线 , isindex - input prompt , menu - 菜单列表 , noframes - frames可选内容，（对于不支持frame的浏览器显示此区块内容 , noscript - ）可选脚本内容（对于不支持script的浏览器显示此内容） , ol - 排序表单 , p - 段落 , pre - 格式化文本 , table - 表格 , ul - 非排序列表</p>		
		<p>盒模型有两种：标准盒模型（w3c标准）和IE盒模型。标准盒模型中width和height指的是内容区域的宽度和高度，增加内边距、边框和外边距不会影响内容区域的尺寸，但是会增加元素框的总尺寸；但在IE6浏览器的width不是内容的宽度，而是内容、内边距和边框的宽度总和。</p>
		<img src="13668048-176B-4993-B866-3EF8C41BB707.png" />
		<p>css选择符: *, #X, .X, XY, X, X:visited and X:link, X+Y, X>Y, X~Y, X[title], X[href*="url"], X[href^="http"], X[href$=".jpg"], X[data-*="foo"], X[foo~="bar"], X:checked, X:after, X:hover, X:not(selector), X::pseudoElement, X:nth-child(n), X:nth-last-child(n), Xnth-of-type(n), X:nth-last-of-type(n), X:first-child, X:last-child, X:only-child, X:only-of-type, X:first-of-type</p>
		<p>优先级算法如何计算:
			1级: . [] ();字段访问,数组下标,函数调用以及表达式分组;
			<br />
			2级: ++ -- - ~ ! delete new typeof void;一元运算符,返回数据类型,对象创建,未定义值;
			<br />
			3级: * / % ; 乘法,除法,取模;
			<br />
			4级: + - +; 加法,减法,字符串连接;
			<br />
			5级: << >> >>>; 移位;
				<br />
			6级: == != === !== ; 等于,不等于,严格相等,非严格相等;
			<br />
			7级:& ; 按位与;
			<br />
			8级:^ 按位异或;
			<br />
			9级:| 按位或;
			<br />
			10级:&& ; 逻辑与;
			<br />
			11级:|| ; 逻辑或;
			<br />
			12级:?: 条件;
			<br />
			13级: = = ; 赋值,运算赋值;
			<br />
			14级: , ; 多重求值;
			<br />
		</p>		
		<p>important 优先级高于内联</p>
		<p>清除浮动的方法:
			<br />
			1)在浮动元素下加子元素&lt;div class="clear"&gt;&lt;"/div&gt;然后设置样式.clear{ height:0px;font-size:0;clear:both;}；
			<br />
			2)在浮动元素下面（与浮动元素同级）加&lt;br clear="all"/&gt;
			<br />
			3)给浮动元素的父级也加浮动(这种情况当父级margin:0 auto时不居中)
			<br />
			4)给父级加display:inline-block;(同方法2,不居中,只有IE6,7居中)
			<br />
			5)给浮动元素父级加overflow:auto;
			<br />
			6）经典用法
 			<br />
 			.clear,.clear-all{clear:both;font-size:0;height:0;line-height:0;overflow:hidden}
			<br />
			.fix:after,.clearfix:after{clear:both;content:" ";display:block;font-size:0;height:0;visibility:hidden}
			<br />
			.fix,.clearfix{*zoom:1}
			<br />
			___________
			<br />
			1.父级div定义height
			<br />
				优点：简单，代码少，容易掌握
			<br />
				缺点：只适合高度固定的布局，要给出精确的高度，如果高度和父级div不一样时，会产生问题
			<br />
			2.结尾处加空div标签clear:both
			<br />
				优点：简单，代码少，浏览器支持好，不容易出现怪问题
			<br />
				缺点：不少初学者不理解原理；如果页面浮动布局多，就要增加很多空div，让人感觉很不爽
			<br />
			3.父级div定义伪类:after和zoom
			<br />
				优点：浏览器支持好，不容易出现怪问题（目前：大型网站都有使用，如：腾迅，网易，新浪等等）
			<br />
				缺点：代码多，不少初学者不理解原理，要两句代码结合使用，才能让主流浏览器都支持
			<br />
			4.父级div定义overflow:hidden
			<br />
				优点：简单，代码少，浏览器支持好
			<br />
				缺点：不能和position配合使用，因为超出的尺寸的会被隐藏
			<br />
			5.父级div定义overflow:auto
			<br />
				优点：简单，代码少，浏览器支持好
			<br />
				缺点：内部宽高超过父级div时，会出现滚动条。
			<br />
			6.父级div也一起浮动
			<br />
				优点：没有优点...
			<br />
				缺点：会产生新的浮动问题.
			<br />
			7.父级div定义display:table
			<br />
				优点：没有优点
			<br />
				缺点：会产生新的未知问题
			<br />
			8.结尾处加br标签clear:both
			<br />
				.clearfloat{clear:both}
			<br />
				&lt;br class="clearfloat" /&gt;
			<br />
				没这么用过, 不知道啥样
		</p>
		<p>html 几种储存方法
			1.本地储存 localstorage;
			2.本地储存 sessionstorage;
			3.离线缓存 application cache;
			4. Web SQL;
			5.indexDB;
		</p>
		<p>http状态码:
			100-199 用于指定客户端应相应的某些动作。 
			200-299 用于表示请求成功。 
			300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 
			400-499 用于指出客户端的错误。 
			500-599 用于支持服务器错误;
			<br />
			100 (Continue/继续)如果服务器收到头信息中带有100-continue的请求，这是指客户端询问是否可以在后续的请求中发送附件。在这种情况下，服务器用100(SC_CONTINUE)允许客户端继续或用417 (Expectation Failed)告诉客户端不同意接受附件。这个状态码是 HTTP 1.1中新加入的。 
			<br />
			101 (Switching Protocols/转换协议)
			<br />
			101 (SC_SWITCHING_PROTOCOLS)状态码是指服务器将按照其上的头信息变为一个不同的协议。这是 HTTP 1.1中新加入的。 
			<br />
			200 (OK/正常)
			<br />
			200 (SC_OK)的意思是一切正常。一般用于相应GET和POST请求。这个状态码对servlet是缺省的；如果没有调用setStatus方法的话，就会得到200。 
			<br />
			201 (Created/已创建)
			<br />
			201 (SC_CREATED)表示服务器在请求的响应中建立了新文档；应在定位头信息中给出它的URL。			
			<br />
			202 (Accepted/接受)
			<br />
			202 (SC_ACCEPTED)告诉客户端请求正在被执行，但还没有处理完。 
			<br />
			203 (Non-Authoritative Information/非官方信息)
			<br />
			状态码203 (SC_NON_AUTHORITATIVE_INFORMATION)是表示文档被正常的返回，但是由于正在使用的是文档副本所以某些响应头信息可能不正确。这是 HTTP 1.1中新加入的。 
			<br />
			204 (No Content/无内容)
			<br />
			在并没有新文档的情况下，204 (SC_NO_CONTENT)确保浏览器继续显示先前的文档。这各状态码对于用户周期性的重载某一页非常有用，并且你可以确定先前的页面是否已经更新。例如，某个servlet可能作如下操作： 
			<br />
			int pageVersion =Integer.parseInt(request.getParameter("pageVersion"));
			<br />
			if (pageVersion >;= currentVersion) {
			<br />
			   response.setStatus(response.SC_NO_CONTENT);
			   <br />
			} else {
			<br />
			       // Create regular page
			       <br />
			}
			<br />
			但是，这种方法对通过刷新响应头信息或等价的HTML标记自动重载的页面起作用，因为它会返回一个204状态码停止以后的重载。但基于JavaScript脚本的自动重载在这种情况下仍然需要能够起作用。可以阅读本书7.2 ( HTTP 1.1 Response Headers and Their Meaning/HTTP 1.1响应头信息以及他们的意义)部分的详细讨论。 
			<br />
			205 (Reset Content/重置内容)
			<br />
			重置内容205 (SC_RESET_CONTENT)的意思是虽然没有新文档但浏览器要重置文档显示。这个状态码用于强迫浏览器清除表单域。这是 HTTP 1.1中新加入的。 
			<br />
			206 (Partial Content/局部内容)
			<br />
			206 (SC_PARTIAL_CONTENT)是在服务器完成了一个包含Range头信息的局部请求时被发送的。这是 HTTP 1.1中新加入的。 
			<br />
			300 (Multiple Choices/多重选择)
			<br />
			300 (SC_MULTIPLE_CHOICES)表示被请求的文档可以在多个地方找到，并将在返回的文档中列出来。如果服务器有首选设置，首选项将会被列于定位响应头信息中。 
			<br />
			301 (Moved Permanently)
			<br />
			301 (SC_MOVED_PERMANENTLY)状态是指所请求的文档在别的地方；文档新的URL会在定位响应头信息中给出。浏览器会自动连接到新的URL。 
			<br />
			302 (Found/找到)
			<br />
			与301有些类似，只是定位头信息中所给的URL应被理解为临时交换地址而不是永久的。注意：在 HTTP 1.0中，消息是临时移动(Moved Temporarily)的而不是被找到，因此HttpServletResponse中的常量是SC_MOVED_TEMPORARILY不是我们以为的SC_FOUND。 
			<br />
			注意
			<br />
			代表状态码302的常量是SC_MOVED_TEMPORARILY而不是SC_FOUND。 
			<br />
			状态码302是非常有用的因为浏览器自动连接在定为响应头信息中给出的新URL。这非常有用，而且为此有一个专门的方法——sendRedirect。使用response.sendRedirect(url)比调用response.setStatus(response.SC_MOVED_TEMPORARILY)和response.setHeader("Location", url)多几个好处。首先，response.sendRedirect(url)方法明显要简单和容易。第二，servlet自动建立一页保存这一连接以提供给那些不能自动转向的浏览器显示。最后，在servlet 2.2版本（J2EE中的版本）中，sendRedirect能够处理相对路径，自动转换为绝对路径。但是你只能在2.1版本中使用绝对路径。 
			<br />
			如果你将用户转向到站点的另一页中，你要用 HttpServletResponse 中的 encodeURL 方法传送URL。这么做可预防不断使用基于URL重写的会话跟踪的情况。URL重写是一种在你的网站跟踪不使用 cookies 的用户的方法。这是通过在每一个URL尾部附加路径信息实现的，但是 servlet 会话跟踪API会自动的注意这些细节。会话跟踪在第九章讨论，并且养成使用 encodeURL 的习惯会使以后添加会话跟踪的功能更容易很多。 
			<br />
			核心技巧
			<br />
			如果你将用户转向到你的站点的其他页面，用 response.sendRedirect(response.encodeURL(url)) 的方式事先计划好会话跟踪(session tracking)要比只是调用 response.sendRedirect(url) 好的多。 
			<br />
			这个状态码有时可以与301交换使用。例如，如果你错误的访问了http://www.talentdigger.cn/home/link.php?url=aG9zdC9%2BdXNlcg%3D%3D（路径信息不完整），有些服务器就会回复301状态码而有些则回复302。从技术上说，如果最初的请求是GET浏览器只是被假定自动转向。如果想了解更多细节，请看状态码307的讨论。 
			<br />
			303 (See Other/参见其他信息)
			<br />
			这个状态码和 301、302 相似，只是如果最初的请求是 POST，那么新文档（在定位头信息中给出）药用 GET 找回。这个状态码是新加入 HTTP 1.1中的。 
			<br />
			304 (Not Modified/为修正)
			<br />
			当客户端有一个缓存的文档，通过提供一个 If-Modified-Since 头信息可指出客户端只希望文档在指定日期之后有所修改时才会重载此文档，用这种方式可以进行有条件的请求。304 (SC_NOT_MODIFIED)是指缓冲的版本已经被更新并且客户端应刷新文档。另外，服务器将返回请求的文档及状态码 200。servlet一般情况下不会直接设置这个状态码。它们会实现getLastModified方法并根据修正日期让默认服务方法处理有条件的请求。这个方法的例程已在2.8部分(An Example Using Servlet Initialization and Page Modification Dates/一个使用servlet初始化和页面修正日期的例子)给出。
			<br />
			305 (Use Proxy/使用代理)
			<br />
			305 (SC_USE_PROXY)表示所请求的文档要通过定位头信息中的代理服务器获得。这个状态码是新加入 HTTP 1.1中的。 
			<br />
			307 (Temporary Redirect/临时重定向)
			<br />
			浏览器处理307状态的规则与302相同。307状态被加入到 HTTP 1.1中是由于许多浏览器在收到302响应时即使是原始消息为POST的情况下仍然执行了错误的转向。只有在收到303响应时才假定浏览器会在POST请求时重定向。添加这个新的状态码的目的很明确：在响应为303时按照GET和POST请求转向；而在307响应时则按照GET请求转向而不是POST请求。注意：由于某些原因在HttpServletResponse中还没有与这个状态对应的常量。该状态码是新加入HTTP 1.1中的。 
			<br />
			注意
			<br />
			在 HttpServletResponse 中没有 SC_TEMPORARY_REDIRECT 常量，所以你只能显示的使用307状态码。 
			<br />
			400 (Bad Request/错误请求)
			<br />
			400 (SC_BAD_REQUEST)指出客户端请求中的语法错误。 
			<br />
			401 (Unauthorized/未授权)
			<br />
			401 (SC_UNAUTHORIZED)表示客户端在授权头信息中没有有效的身份信息时访问受到密码保护的页面。这个响应必须包含一个WWW-Authenticate的授权信息头。例如，在本书4.5部分中的“Restricting Access to Web Pages./限制访问Web页。” 
			<br />
			403 (Forbidden/禁止)
			<br />
			403 (SC_FORBIDDEN)的意思是除非拥有授权否则服务器拒绝提供所请求的资源。这个状态经常会由于服务器上的损坏文件或目录许可而引起。 
			<br />
			404 (Not Found/未找到)
			<br />
			404 (SC_NOT_FOUND)状态每个网络程序员可能都遇到过，他告诉客户端所给的地址无法找到任何资源。它是表示“没有所访问页面”的标准方式。这个状态码是常用的响应并且在HttpServletResponse类中有专门的方法实现它：sendError("message")。相对于setStatus使用sendError得好处是：服务器会自动生成一个错误页来显示错误信息。但是，Internet Explorer 5浏览器却默认忽略你发挥的错误页面并显示其自定义的错误提示页面，虽然微软这么做违反了 HTTP 规范。要关闭此功能，在工具菜单里，选择Internet选项，进入高级标签页，并确认“显示友好的 HTTP 错误信息”选项（在我的浏览器中是倒数第8各选项）没有被选。但是很少有用户知道此选项，因此这个特性被IE5隐藏了起来使用户无法看到你所返回给用户的信息。而其他主流浏览器及IE4都完全的显示服务器生成的错误提示页面。可以参考图6-3及6-4中的例子。 
			<br />
			核心警告
			<br />
			默认情况下，IE5忽略服务端生成的错误提示页面。 
			<br />
			405 (Method Not Allowed/方法未允许)
			<br />
			405 (SC_METHOD_NOT_ALLOWED)指出请求方法(GET, POST, HEAD, PUT, DELETE, 等)对某些特定的资源不允许使用。该状态码是新加入 HTTP 1.1中的。 
			<br />
			406 (Not Acceptable/无法访问)
			<br />
			406 (SC_NOT_ACCEPTABLE)表示请求资源的MIME类型与客户端中Accept头信息中指定的类型不一致。见本书7.2部分中的表7.1(HTTP 1.1 Response Headers and Their Meaning/HTTP 1.1响应头信息以及他们的意义)中对MIME类型的介绍。406是新加入 HTTP 1.1中的。 
			<br />
			407 (Proxy Authentication Required/代理服务器认证要求)
			<br />
			407 (SC_PROXY_AUTHENTICATION_REQUIRED)与401状态有些相似，只是这个状态用于代理服务器。该状态指出客户端必须通过代理服务器的认证。代理服务器返回一个Proxy-Authenticate响应头信息给客户端，这会引起客户端使用带有Proxy-Authorization请求的头信息重新连接。该状态码是新加入 HTTP 1.1中的。 
			<br />
			408 (Request Timeout/请求超时)
			<br />
			408 (SC_REQUEST_TIMEOUT)是指服务端等待客户端发送请求的时间过长。该状态码是新加入 HTTP 1.1中的。 
			<br />
			409 (Conflict/冲突)
			<br />
			该状态通常与PUT请求一同使用，409 (SC_CONFLICT)状态常被用于试图上传版本不正确的文件时。该状态码是新加入 HTTP 1.1中的。 			
			<br />
			410 (Gone/已经不存在)
			<br />
			410 (SC_GONE)告诉客户端所请求的文档已经不存在并且没有更新的地址。410状态不同于404，410是在指导文档已被移走的情况下使用，而404则用于未知原因的无法访问。该状态码是新加入 HTTP 1.1中的。 			
			<br />
			411 (Length Required/需要数据长度)
			<br />
			411 (SC_LENGTH_REQUIRED)表示服务器不能处理请求（假设为带有附件的POST请求），除非客户端发送Content-Length头信息指出发送给服务器的数据的大小。该状态是新加入 HTTP 1.1的。			
			<br />
			412 (Precondition Failed/先决条件错误)
			<br />
			412 (SC_PRECONDITION_FAILED)状态指出请求头信息中的某些先决条件是错误的。该状态是新加入 HTTP 1.1的。 			
			<br />
			413 (Request Entity Too Large/请求实体过大)
			<br />
			413 (SC_REQUEST_ENTITY_TOO_LARGE)告诉客户端现在所请求的文档比服务器现在想要处理的要大。如果服务器认为能够过一段时间处理，则会包含一个Retry-After的响应头信息。该状态是新加入 HTTP 1.1的。 			
			<br />
			414 (Request URI Too Long/请求URI过长)
			<br />
			414 (SC_REQUEST_URI_TOO_LONG)状态用于在URI过长的情况时。这里所指的“URI”是指URL中主机、域名及端口号之后的内容。例如：在URL--http://www.y2k-disaster.com:8080/we/look/silly/now/中URI是指/we/look/silly/now/。该状态是新加入 HTTP 1.1的。 			
			<br />
			415 (Unsupported Media Type/不支持的媒体格式)
			<br />
			415 (SC_UNSUPPORTED_MEDIA_TYPE)意味着请求所带的附件的格式类型服务器不知道如何处理。该状态是新加入 HTTP 1.1的。 		
			<br />
			416 (Requested Range Not Satisfiable/请求范围无法满足)
			<br />
			416表示客户端包含了一个服务器无法满足的Range头信息的请求。该状态是新加入 HTTP 1.1的。奇怪的是，在servlet 2.1版本API的HttpServletResponse中并没有相应的常量代表该状态。 			
			<br />
			注意
			<br />
			在servlet 2.1的规范中，类HttpServletResponse并没有SC_REQUESTED_RANGE_NOT_SATISFIABLE 这样的常量，所以你只能直接使用416。在servlet 2.2版本之后都包含了此常量。 			
			<br />
			417 (Expectation Failed/期望失败)
			<br />
			如果服务器得到一个带有100-continue值的Expect请求头信息，这是指客户端正在询问是否可以在后面的请求中发送附件。在这种情况下，服务器也会用该状态(417)告诉浏览器服务器不接收该附件或用100 (SC_CONTINUE)状态告诉客户端可以继续发送附件。该状态是新加入 HTTP 1.1的。 			
			<br />
			500 (Internal Server Error/内部服务器错误)
			<br />
			500 (SC_INTERNAL_SERVER_ERROR) 是常用的“服务器错误”状态。该状态经常由CGI程序引起也可能（但愿不会如此！）由无法正常运行的或返回头信息格式不正确的servlet引起。 			
			<br />
			501 (Not Implemented/未实现)
			<br />
			501 (SC_NOT_IMPLEMENTED)状态告诉客户端服务器不支持请求中要求的功能。例如，客户端执行了如PUT这样的服务器并不支持的命令。 			
			<br />
			502 (Bad Gateway/错误的网关)
			<br />
			502 (SC_BAD_GATEWAY)被用于充当代理或网关的服务器；该状态指出接收服务器接收到远端服务器的错误响应。 			
			<br />
			503 (Service Unavailable/服务无法获得)
			<br />
			状态码503 (SC_SERVICE_UNAVAILABLE)表示服务器由于在维护或已经超载而无法响应。例如，如果某些线程或数据库连接池已经没有空闲则servlet会返回这个头信息。服务器可提供一个Retry-After头信息告诉客户端什么时候可以在试一次。 			
			<br />
			504 (Gateway Timeout/网关超时)
			<br />
			该状态也用于充当代理或网关的服务器；它指出接收服务器没有从远端服务器得到及时的响应。该状态是新加入 HTTP 1.1的。 			
			<br />
			505 (HTTP Version Not Supported/不支持的 HTTP 版本)
			<br />
			505 (SC_HTTP_VERSION_NOT_SUPPORTED)状态码是说服务器并不支持在请求中所标明 HTTP 版本。该状态是新加入 HTTP 1.1的
			<br />
		</p>
		
		<script type="text/javascript">
			var p1 = document.querySelector("p");
			var timeDate = new Date();
			var index = 0;
			var blu = false;
			var arr = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"];
			var timer = null;

			function aa() {
				timer = setInterval(function() {
					if(index == 0) {
						p1.innerHTML = timeDate.getMonth() + 1;
					} else if(index == 1) {
						p1.innerHTML = arr[timeDate.getDay() - 1];
					} else if(index == 2) {
						p1.innerHTML = timeDate.getDate();
					}
					index++;
					if(index == 3) {
						index = 0;
					}
				}, 1000)
			}

			function btnChange() {
				blu = !blu;
				if(blu) {
					p1.style.display = "block";
					aa();

				} else {
					p1.style.display = "none";
					clearInterval(timer);
				}
			}
		</script>
	</body>

</html>